package com.uzai.console.service.configplan;

import com.uzai.console.dto.locallive.tlbtoken.TlbTokenQuery;
import com.uzai.console.dto.tb.tbtoken.TbTokenQuery;
import com.uzai.console.dto.wechatprivate.configplan.*;
import com.uzai.console.vo.base.SelectIdVo;
import com.uzai.console.vo.base.SelectKeyVo;
import com.uzai.console.vo.sysdomain.SysDomainInfoVo;
import com.uzai.console.vo.sysplugin.SysPluginVo;
import com.uzai.console.vo.wechatprivate.configplan.BigPromotionVo;
import com.uzai.console.vo.wechatprivate.configplan.ConfigPlanSelectListVo;
import com.uzai.console.vo.wechatprivate.configplan.ConfigPlanVo;

import java.util.List;

/***
 * @author liuqi
 * @date 2021年08月13日 11:33
 */
public interface ConfigPlanService {

    /**
     * 查询配置方案列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param query
     * @return null
     */
    List<ConfigPlanSelectListVo> findConfigPlanSelectList(ConfigPlanQuery query);

    /**
     * 查询配置方案详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanIdDto
     * @return null
     */
    ConfigPlanVo findConfigPlanInfo(ConfigPlanIdDto configPlanIdDto);

    /**
     * 查询默认配置方案详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @param deviceType
     * @return null
     */
    ConfigPlanVo findConfigPlanInfoIsDefault(Long merId, String deviceType);

    /**
     * 复制默认配置方案详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanCopyDefaultDto
     * @return null
     */
    ConfigPlanVo copyDefaultConfig(ConfigPlanCopyDefaultDto configPlanCopyDefaultDto);

    /**
     * 添加配置方案
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanAddDto
     * @return null
     */
    Long addConfigPlan(ConfigPlanAddDto configPlanAddDto);

    /**
     * 修改配置方案详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanUpdateDto
     * @return null
     */
     void updateConfigPlan(ConfigPlanUpdateDto configPlanUpdateDto);

    /**
     * 设置默认配置方案
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanUpdateDto
     * @return null
     */
    void setDefault(ConfigPlanUpdateDto configPlanUpdateDto);

    /**
     * 删除配置方案详情
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanIdDto
     * @return null
     */
    void deleteConfigPlan(ConfigPlanIdDto configPlanIdDto);

    /**
     * 复制配置方案
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanCopyDto
     * @return null
     */
    Long copyConfigPlan(ConfigPlanCopyDto configPlanCopyDto);

    /**
     * 查询插件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanPluginIdDto
     * @return null
     */
    SysPluginVo findSysPluginInfo(ConfigPlanPluginIdDto configPlanPluginIdDto);

    /**
     * 修改插件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanUpdatePluginDto
     * @return null
     */
    Long updateSysPlugin(ConfigPlanPluginUpdateDto configPlanUpdatePluginDto);

    /**
     * 批量修改插件
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanPluginBatchUpdateDto
     * @return null
     */
    void batchUpdateSysPlugin(ConfigPlanPluginBatchUpdateDto configPlanPluginBatchUpdateDto);

    /**
     * 修改配置方案中的联盟
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanAccountUpdateDto
     * @return null
     */
    void updateConfigPlanAccount(ConfigPlanAccountUpdateDto configPlanAccountUpdateDto);

    /**
     * 批量修改配置方案中的联盟
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanAccountBatchUpdateDto
     * @return null
     */
    void batchUpdateConfigPlanAccount(ConfigPlanAccountBatchUpdateDto configPlanAccountBatchUpdateDto);


    /**
     * 修改配置方案中的分佣
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanProfitUpdateDto
     * @return null
     */
    void updateConfigPlanProfit(ConfigPlanProfitUpdateDto configPlanProfitUpdateDto);

    /**
     * 查询淘宝联盟下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param tbTokenQuery
     * @return null
     */
    List<SelectIdVo> findTbTokenSelectList(TbTokenQuery tbTokenQuery);

    /**
     * 查询淘宝联盟下拉选择列表(取值token)
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param tbTokenQuery
     * @return null
     */
    List<SelectKeyVo> findTbTokenValueSelectList(TbTokenQuery tbTokenQuery);

    /**
     * 查询淘宝联盟下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findElmTokenSelectList(Long merId);

    /**
     * 查询炮灰淘宝联盟下拉列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findPhTbTokenSelectList(Long merId);

    /**
     * 查询唯品会联盟下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findVphTokenSelectList(Long merId);

    /**
     * 查询炮灰唯品会联盟下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findPhVphTokenSelectList(Long merId);

    /**
     * 查询京东联盟下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findJdTokenSelectList(Long merId);

    /**
     * 查询京东联盟下拉选择列表(取值京东联盟unionid)
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectKeyVo> findJdTokenValueSelectList(Long merId);

    /**
     * 查询拼多多联盟下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findPddTokenSelectList(Long merId);

    /**
     * 查询抖音联盟下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findDyTokenSelectList(Long merId);

    /**
     * 查询推老板共享账号下拉选择列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param tlbTokenQuery
     * @return null
     */
    List<SelectIdVo> findTlbTokenSelectList(TlbTokenQuery tlbTokenQuery);

    /**
     * 查询推广裂变下拉选择框列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SelectIdVo> findRegRewardRuleSelectList(Long merId);

    /**
     * 查询系统平台域名下拉选择框列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param merId
     * @return null
     */
    List<SysDomainInfoVo> findSysDomainSelectList(Long merId);

    /**
     * 查询分佣规则下拉选择框列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param configPlanNormalrewardruleDto
     * @return null
     */
    List<SelectIdVo> findNormalRewardRuleSelectList(ConfigPlanNormalrewardruleDto configPlanNormalrewardruleDto);


    ConfigPlanSelectListVo findAppConfigPlan(ConfigPlanQuery query);

    BigPromotionVo findBigPromotionInfo();
}
